package com.telchina.workorder.third.service;

import cn.hutool.db.PageResult;
import com.telchina.common.core.domain.AjaxResult;

import java.util.Map;


/**
 * 流程任务实例 Service 接口
 *
 * @author jason
 * @author telchina
 */
public interface BpmTaskThirdService {


    /**
     * 获得待办的流程任务分页
     *
     * @return 流程任务分页
     */
    AjaxResult getTodoTask(Map<String, Object> paramsMap);

    /**
     * 获得已办的流程任务分页
     *
     * @return 流程任务分页
     */
    PageResult<Map<String, Object>> getDoneTaskPage(Map<String, Object> paramsMap);

    /**
     * 将流程任务分配给指定用户
     *
     */
    void updateTaskAssignee(Map<String, Object> paramsMap);


    /**
     * 通过任务
     *
     */
    AjaxResult approveTask(Map<String, Object> paramsMap);

    /**
     * 不通过任务
     *
     */
    AjaxResult rejectTask(Map<String, Object> paramsMap);


    /**
     * 修改任务比变量
     */
    AjaxResult updateTaskVariable(Map<String, Object> paramsMap);

    /**
     * 获得指定流程实例的任务列表
     * @param processInstanceId
     * @return
     */
    AjaxResult getTaskListByProcessInstanceId(String processInstanceId);

    /**
     * 当前人员是否能处理这个任务
     * @param paramsMap
     * @return
     */
    AjaxResult checkUserIdDoTask(String taskId);

    /**
     * 获取流程定义时属性
     */
    AjaxResult getCustomProperty(String taskId, String customPropertyName);


    /**
     * 获取下一节点的任务属性
     */
    AjaxResult getNextUserTask(Map<String, Object> mapVar);

    /**
     * 后去下一步操作节点
     */
    AjaxResult getNextFlow(String processInstanceId);

    /**
     * 配置按钮
     */
    AjaxResult getButton(String taskDefinitionkey);


}
